﻿/**
 * Create in 2012-4-4.
 */
package kit4j.common.task.executor;

import kit4j.common.task.Task;

/**
 * 任务执行器接口。
 * 
 * @author MiniKnife
 * 
 */
public interface TaskExecutor {

	/**
	 * 添加一个任务到执行序列等待执行。
	 * 
	 * @param task
	 *            要添加的任务
	 */
	public void addTask(Task task);

	/**
	 * 从任务序列中移除一个任务。
	 * 
	 * @param task
	 *            要移除的任务
	 */
	public void removeTask(Task task);

	/**
	 * 移除任务序列中的所有任务。
	 */
	public void removeAllTasks();

	/**
	 * @return 任务序列中所有任务组成的数值。
	 */
	public Task[] getTasks();

	/**
	 * 启动任务序列。
	 */
	public void start();

	/**
	 * 暂停当前任务序列的执行。
	 */
	public void pause();

	/**
	 * 继续当前任务序列的执行。
	 */
	public void resume();

	/**
	 * 停止当前任务序列的执行。
	 */
	public void stop();

	/**
	 * 重新启动任务序列。
	 */
	public void restart();

	/**
	 * 等待当前任务序列中的所有任务执行完成。
	 */
	public void waitForAllTasksComplete();

}
